package Biblioteca;

import java.util.ArrayList;
import Reproductor.Cancion;

public class Busqueda {
	
	 /**
	  * Filtra canciones de una lista de canciones por coincidencias en el
	  * titulo de la cancion.
	  *
	  * @param lista: Lista de canciones que va a ser filtrada.
	  * @param titulo: la cadena de caracteres segun la cual vamos a filtrar
	  * las canciones.
	  * @return : lista de canciones ya filtradas.
	  */
	public ArrayList<Cancion> buscarPorTitulo(ArrayList<Cancion> lista, String titulo){
		ArrayList<Cancion> arrayAux = new ArrayList<Cancion>();
		for(int i=0; i<lista.size();i++){
			Cancion c = lista.get(i);
			if (comparar(titulo,c.getTitulo())){
				arrayAux.add(c);
			}
		}
		return arrayAux;
	}
	
	 /**
	  * Filtra canciones de una lista de canciones por coincidencias en el
	  * artista de la cancion
	  *
	  * @param lista: Lista de canciones que va a ser filtrada.
	  * @param titulo: la cadena de caracteres segun la cual vamos a filtrar
	  * las canciones.
	  * @return : lista de canciones ya filtradas.
	  */
	public ArrayList<Cancion> buscarPorArtista(ArrayList<Cancion> lista, String titulo){
		ArrayList<Cancion> arrayAux = new ArrayList<Cancion>();
		for(int i=0; i<lista.size();i++){
			Cancion c = lista.get(i);
			if (comparar(titulo,c.getArtista())){
				arrayAux.add(c);
			}
		}
		return arrayAux;
	}
	
	/**
	  * Filtra canciones de una lista de canciones por coincidencias en el
	  * album de la cancion.
	  *
	  * @param lista: Lista de canciones que va a ser filtrada.
	  * @param titulo: la cadena de caracteres segun la cual vamos a filtrar
	  * las canciones.
	  * @return : lista de canciones ya filtradas.
	  */
	public ArrayList<Cancion> buscarPorAlbum(ArrayList<Cancion> lista, String titulo){
		ArrayList<Cancion> arrayAux = new ArrayList<Cancion>();
		for(int i=0; i<lista.size();i++){
			Cancion c = lista.get(i);
			if (comparar(titulo,c.getAlbum())){
				arrayAux.add(c);
			}
		}
		return arrayAux;
	}
	
	/**
	  * Filtra canciones de una lista de canciones por coincidencias en el
	  * numero de la cancion
	  *
	  * @param lista: Lista de canciones que va a ser filtrada.
	  * @param titulo: la cadena de caracteres segun la cual vamos a filtrar
	  * las canciones.
	  * @return : lista de canciones ya filtradas.
	  */
	public ArrayList<Cancion> buscarPorNumero(ArrayList<Cancion> lista, String titulo){
		ArrayList<Cancion> arrayAux = new ArrayList<Cancion>();
		for(int i=0; i<lista.size();i++){
			Cancion c = lista.get(i);
			if (comparar(titulo,c.getNumero())){
				arrayAux.add(c);
			}
		}
		return arrayAux;
	}
	
	 /**
	  * Compara dos cadenas para averiguar si una es igual a la otra o al menos
	  * esta contenida en ella.
	  * 
	  * @param s1: cadena de caracteres que tiene que estar contenida en la otra.
	  * @param s2: cadena de caracteres de la que queremos saber si contiene la
	  * otra o no.
	  * @return: true si son iguales o esta contenida la cadena en la otra. False
	  * si no se cumple.
	  */
	public boolean comparar(String s1, String s2){
		//Comparamos si s1 esta contenido en s2
		s1=s1.toLowerCase();
		s2=s2.toLowerCase();
		return s2.contains(s1);
	}
}
